\documentclass[11pt,a4paper,ngerman,final]{article}

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage{lmodern}
\usepackage{graphicx}
\usepackage{acronym}

\begin{document}

\section*{PCA -- excercise 09 \\\\ Zusammenfassung: Parallele Programmiermodelle \\\\ \tiny{group: pra05 -- Matthias Heisler, Steffen Lammel}}

\vspace{1cm}

\subsection*{Message Passing (MPI)}
Der Aufwand um eine MPI Anwendung performant umzusetzten war relativ hoch. Von der naiven Erstimplementierung zu einer schnellen, effizienten Anwendung verstreicht nochmals einige Zeit. Am de-fakto Standard für Message-Passing Anwendungen führt jedoch kein weg vorbei wenn mehr als ein eine Hand voll Prozessoren genutzt werden soll. 
\newline

\subsection*{OpenMP}
Auf den ersten Blick ist das auf Compiler-Direktiven OpenMP die einfachere Umgebung der beiden Shared-Memory Umgebungen. Um eine funktionierende(!) Anwendung zu erstellen benötigt es aber mehr Handarbeit bzgl. der Partitionierung. Auf die Automatismen sollte man sich nicht immer verlassen.

\subsection*{POSIX Threads}
Im Gegensatz zu OpenMP ist die PThreads Lib weniger intuitiv und hat eine steilere Lernkurve. Programmierfehler werden hier eher bemerkt als bei OpenMP, da das Programm i.d.R. abstürzt oder schwere Fehler wie ein Seg.Fault erzeugt oder erst garnicht zu übersetzen ist. Die Gefahr ein Programm zu schreiben das aufgrund von Programmierfehlern falsche Ergebnisse liefert, ist hier (subjektiv betrachtet) etwas geringer als bei OpenMP.

\end{document}
